SQLAlchemy তে Data Filtering করা হয় বিভিন্ন ডেটাবেস রেকর্ড থেকে প্রয়োজনীয় ডেটা অনুসন্ধান (fetch) করতে। filter() এবং filter_by() দুটি ফাংশন ব্যবহার করে ডেটাবেসের ডেটা ফিল্টার করা এবং নির্দিষ্ট শর্ত (conditions) অনুসারে ডেটা বের করা যায়। এ দুটি ফাংশনের মধ্যে কিছু পার্থক্য রয়েছে, তবে উভয়ই ডেটাবেসের রেকর্ড ফিল্টার করতে কার্যকরী।
filter() ফাংশন
filter() ফাংশন SQLAlchemy তে একটি অত্যন্ত শক্তিশালী পদ্ধতি, যার মাধ্যমে ডেটা ফিল্টার করা হয় শর্ত অনুসারে। এটি SQLAlchemy Query Object এর একটি অংশ এবং এর মধ্যে Python condition expressions ব্যবহার করা যায়।
filter() এর মাধ্যমে Data Filtering:
- filter() ফাংশনে SQLAlchemy expression language ব্যবহার করা হয়।
- শর্তে বিভিন্ন ফাংশন এবং অপারেটর (যেমন
==,>,<,like, ইত্যাদি) ব্যবহার করা যায়।
উদাহরণ (filter()):
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Base ক্লাস তৈরি
Base = declarative_base()
# Model তৈরি
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# ডেটাবেস ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)
# টেবিল তৈরি করা
Base.metadata.create_all(engine)
# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()
# filter() ব্যবহার করে ডেটা ফিল্টার করা
result = session.query(User).filter(User.age > 25).all()
# ফলাফল প্রিন্ট করা
for user in result:
print(user.name, user.age)
# Session বন্ধ করা
session.close()
এখানে filter(User.age > 25) দিয়ে age কলামের মান 25 এর বেশি এমন রেকর্ডগুলো ফিল্টার করা হয়েছে। all() ব্যবহার করলে সব মিলানো রেকর্ডগুলো একটি লিস্ট হিসেবে পাওয়া যাবে।
filter_by() ফাংশন
filter_by() ফাংশন SQLAlchemy তে একটি সহজতর পদ্ধতি, যা সরাসরি key-value pairs হিসেবে শর্ত প্রদান করে। এটি Python expression language ব্যবহার না করে সরাসরি column names এর মাধ্যমে ডেটা ফিল্টার করার জন্য উপযোগী।
filter_by() এর মাধ্যমে Data Filtering:
- filter_by() ব্যবহার করা খুবই সহজ, কারণ এটি শুধুমাত্র কলাম নাম এবং মানের মাধ্যমে ফিল্টার করতে সহায়তা করে।
- এটি শুধুমাত্র সরল শর্তের জন্য ব্যবহৃত হয়, যেমন সমান (
=) শর্ত।
উদাহরণ (filter_by()):
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# Base ক্লাস তৈরি
Base = declarative_base()
# Model তৈরি
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# ডেটাবেস ইঞ্জিন তৈরি
engine = create_engine('sqlite:///example.db', echo=True)
# টেবিল তৈরি করা
Base.metadata.create_all(engine)
# Session তৈরি
Session = sessionmaker(bind=engine)
session = Session()
# filter_by() ব্যবহার করে ডেটা ফিল্টার করা
result = session.query(User).filter_by(age=30).all()
# ফলাফল প্রিন্ট করা
for user in result:
print(user.name, user.age)
# Session বন্ধ করা
session.close()
এখানে, filter_by(age=30) ব্যবহার করা হয়েছে, যার মাধ্যমে age কলামের মান 30 এমন রেকর্ডগুলো ফিল্টার করা হয়েছে।
filter() এবং filter_by() এর মধ্যে পার্থক্য
| ফিচার | filter() | filter_by() |
|---|---|---|
| শর্তের ধরন | Python Expression Language ব্যবহার করে (যেমন ==, >, like, ইত্যাদি)। | শুধুমাত্র সরল key-value পেয়ার হিসেবে কাজ করে (যেমন =)। |
| ব্যবহার | জটিল শর্তগুলোর জন্য, যেমন বিভিন্ন অপারেটর ও ফাংশন ব্যবহার করতে হয়। | সহজ শর্তের জন্য, যেমন age = 30, name = 'Alice'। |
| ফাংশনালিটি | আরও বেশি নমনীয় এবং বিভিন্ন শর্তে কাজ করতে পারে। | সরল শর্তে কাজ করে, তবে কিছু কমপ্লেক্স শর্তে এটি কাজ নাও করতে পারে। |
Data Fetching with filter() and filter_by()
SQLAlchemy তে ডেটা ফেচ করার জন্য filter() এবং filter_by() দুটি গুরুত্বপূর্ণ পদ্ধতি। এই দুটি পদ্ধতি ব্যবহৃত হয় ডেটাবেসে প্রয়োজনীয় রেকর্ড বা ডেটা ফিল্টার করার জন্য।
- filter() অনেক বেশি নমনীয় এবং এতে বিভিন্ন শর্ত ও অপারেটর ব্যবহার করা যায়।
- filter_by() সহজ এবং সরাসরি কলাম ও মান দিয়ে ফিল্টার করা যায়, তবে এটি শুধুমাত্র সরল শর্তের জন্য উপযোগী।
সারাংশ
SQLAlchemy তে filter() এবং filter_by() ফাংশনগুলো ডেটা ফিল্টারিং এবং Data Fetching এর জন্য গুরুত্বপূর্ণ। filter() ফাংশন ব্যবহার করে আপনি জটিল শর্তে ডেটা ফিল্টার করতে পারেন, যেখানে filter_by() সরল শর্তে ডেটা ফিল্টার করার জন্য ব্যবহৃত হয়। এই দুটি পদ্ধতি ডেটাবেস অপারেশনকে আরো কার্যকরী এবং দ্রুত করে তোলে।
Read more